# -*- encoding=utf8 -*-
__author__ = "zichuanlu"

import os

def getDirSize(dir_path):
    """
        获取文件夹大小
        参数 文件夹路径

        计算思路：
        一、判断当前路径是否是文件夹，不是文件夹则结束，是则继续
        二、判断路径是否存在，如果不存在则结束，存在继续
        三、使用函数 os.walk 获取当前文件夹及子文件夹 所有文件绝对路径，同时计算总占用大小
        四、返回大小
    """
    if os.path.isfile(dir_path) or not os.path.isdir(dir_path):
        print("输入的不是文件夹路径 或 文件夹不存在")
        return


    total_size = 0
    # 方法一、常规写法，双循环
    # for root,_,file_list in os.walk(dir_path):
    #     for file_name in file_list:
    #         total_size += os.path.getsize(os.path.join(root, file_name))
    #
    # return total_size

    # 方法二、列表表达式写法
    return sum([os.path.getsize(os.path.join(root, file_name)) for root,_,file_list in os.walk(dir_path) for file_name in file_list])

if __name__ == '__main__':
    cur_path = os.getcwd()
    print("当前需要统计的目录为 %s ，占用%d字节" % (cur_path,getDirSize(cur_path)))
